package cliente.pagina.contenido.grupo.jerarquia.integracionEditar;

import cliente.pagina.contenido.*;
import cliente.pagina.*;
import helpers.grupo.jerarquia.integracionEditar.HelperIntegracionEditar;
import comun.constantes.*;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author unascribed
 * @version 1.0
 */

public abstract class ContenidoIntegracionEditar extends VistaContenido {

  //accion por defecto es agregar
  private String accion = ACCIONES_A_REALIZAR.ACTUALIZAR;
  private Long idTexto = null;
  private String resultadoOperacion;
  // esto es para saber quien es el contenido(pagina) padre del Recurso
  // se debe redefinir en cada una de las subclases que lo necesiten
  protected VistaContenido contenidoPadre = null;
  public ContenidoIntegracionEditar() {
  }

  public ContenidoIntegracionEditar(Pagina pagina) {
    super();
    this.setPagina(pagina);
  }

  // lo redefino porque necesito sacar los parametros del request que esta en la nueva pagina
  public void setPagina(Pagina pagina){
    super.setPagina(pagina);
    if(pagina.getParameter(PARAMETROS_PAGINAS.ACCION)!=null)
      this.accion = pagina.getParameter(PARAMETROS_PAGINAS.ACCION);
    
    if(pagina.getParameter(PARAMETROS_PAGINAS.ID_TEXTO)!=null)
      this.idTexto = new Long(pagina.getParameter(PARAMETROS_PAGINAS.ID_TEXTO));

    if(pagina.getParameter(PARAMETROS_PAGINAS.RESULTADO_OPERACION)!=null)
      this.resultadoOperacion = pagina.getParameter(PARAMETROS_PAGINAS.RESULTADO_OPERACION);
  }
  
  public String getHTMLVista(){
    HelperIntegracionEditar helperIntegracionEditar=null;
    try{
    	helperIntegracionEditar = new HelperIntegracionEditar(this.getPagina(),this);
        String html = "       <h1>"+this.getTitulo()+"</h1>\n\t";

        // de acuerdo al resultado de laoperacion debo poner un mensaje,
        // si es null quiere decir que la pagina no fue llamada automaticamente desde la pagina que actualiza los datos
        if (this.resultadoOperacion!=null && this.resultadoOperacion.compareTo(TEXTOS.ACTUALIZACION_DE_DATOS_EXITOSA)==0)
              html +=  "       <p class=\"mensajeOk\"><img src=\""+this.getPagina().getPathBotonOk()
              +"\" title=\"_blank\" width=\"12\" height=\"10\">"+this.getTextoArticuloElLa()+" "+this.getNombreIntegracion()
              +" con el t&iacute;tulo &quot;"+helperIntegracionEditar.getTituloTexto(this.idTexto)+"&quot; ha sido "+this.getTextoModificado()+" correctamente. </p>\n";
          if (this.resultadoOperacion!=null && this.resultadoOperacion.compareTo(comun.MensajeDeError.ERROR_EN_LA_ACTUALIZACION_DE_DATOS)==0)
            html += "        <p class=\"mensajeError\"><img src=\""+this.getPagina().getPathBotonError()
            +"\" title=\"_blank\" width=\"12\" height=\"10\"><strong>&iexcl;Error!</strong> No se ha podido actualizar "
            +this.getTextoArticuloElLa()+" "+this.getNombreIntegracion()+" con el t&iacute;tulo &quot;"+helperIntegracionEditar.getTituloTexto(this.idTexto)+"&quot; </p>\n";


          // si la accion fue eliminar se debe cambiar el mensaje de OK
          if (this.resultadoOperacion!=null && this.resultadoOperacion.compareTo(TEXTOS.ELIMINACION_DE_DATOS_EXITOSA)==0)
              html +=  "       <p class=\"mensajeOk\"><img src=\""+this.getPagina().getPathBotonOk()
              +"\" title=\"_blank\" width=\"12\" height=\"10\">"+this.getTextoArticuloLosLas()+" "+this.getNombreIntegracionPlural()
              +" han sido "+this.getTextoEliminados()+" correctamente. </p>\n";

          // si la accion fue eliminar se debe cambiar el mensaje de ERROR
          if (this.resultadoOperacion!=null && this.resultadoOperacion.compareTo(comun.MensajeDeError.ERROR_EN_LA_ELIMINACION_DE_DATOS)==0)
              html +=  "       <p class=\"mensajeError\"><img src=\""+this.getPagina().getPathBotonError()
              +"\" title=\"_blank\" width=\"12\" height=\"10\">"+this.getTextoArticuloLosLas()+" "+this.getNombreIntegracionPlural()
              +" NO han sido "+this.getTextoEliminados()+" correctamente. </p>\n";

          // si la accion es agregar el id debe ser null
          if(this.accion!=null && this.accion.compareTo(ACCIONES_A_REALIZAR.REALIZAR)==0)
        	html += helperIntegracionEditar.generarHtmlAgregarModificarIntegracion(null);
          else
            html += helperIntegracionEditar.generarHtmlAgregarModificarIntegracion(this.getIdTexto());
          if((this.getNombreRecurso().compareTo(RECURSOS.SOLICITUD)!=0)|| 
        		  (this.getNombreRecurso().compareTo(RECURSOS.SOLICITUD)==0 && this.accion!=null && this.accion.compareTo(ACCIONES_A_REALIZAR.REALIZAR)!=0)){
        	  		html += helperIntegracionEditar.generarHtmlListaIntegracionesAModificarEliminar(this.getNombreRecurso())+"\n\t\t";
        	  		// agregar link para volver a la pagina principal del recurso
        	  		this.contenidoPadre.setPagina(this.getPagina());
	          if(this.getNombreRecurso().compareTo(RECURSOS.INVITACION)==0)
	          		html +=  "   <div align=\"center\" class=\"linkVolver\" ><a href=\""+this.contenidoPadre.getPathNombrePagina()+"\">Ir al inicio de las invitaciones del grupo</a></div>\n\t\t";
	          else if(this.getNombreRecurso().compareTo(RECURSOS.SOLICITUD)==0)
	        	  html +=  "   <div align=\"center\" class=\"linkVolver\" ><a href=\""+this.contenidoPadre.getPathNombrePagina()+"\">Ir al inicio de las solicitudes del grupo</a></div>\n\t\t";
	          html +=  "   <div align=\"center\" class=\"linkVolver\" ><a href=\""+this.getPagina().getPathPaginas()+"gestion_integracion.jsp?"+PARAMETROS_PAGINAS.REFRESH+"="+new Long((new java.util.Date()).getTime())+"\">Ir al inicio de las integraciones</a></div>\n\t\t";
          }
          
          helperIntegracionEditar.commit();
          return html;
    }
    catch (Exception ex) {
      ex.printStackTrace();
      helperIntegracionEditar.rollback();
      return  comun.MensajeDeError.ERROR_EN_LA_GENERACION_DE_LA_PAGINA;
    }
  }

  abstract public String getTituloIntegracionParticular();
  abstract public String getNombreIntegracion();
  abstract public String getNombreIntegracionPlural();
  abstract public String getSubcarpetaRecurso();

  protected  String getTextoArticuloElLa(){
    return TEXTOS.EL;
  }

  protected String getTextoArticuloLosLas(){
    return TEXTOS.LOS;
  }

  // redefinirlo en caso de que el TEXTO MODIFICADO sea Modificada
  protected String getTextoModificado(){
    return TEXTOS.MODIFICADO;
  }

  protected String getTextoModificados(){
    return TEXTOS.MODIFICADOS;
  }

  protected String getTextoEliminados(){
    return TEXTOS.ELIMINADOS;
  }

  public String getTitulo(){
    return this.accion+" "+this.getTituloIntegracionParticular()+this.getPagina().getPosFijoNombrePagina();
  }

  public void setAccion(String accion) {
    this.accion = accion;
  }

  public String getAccion() {
    return accion;
  }
  public String getTeclaAccesoRapido() {	
		return "I";
	}  
  public void setIdTexto(Long idTexto) {
    this.idTexto = idTexto;
  }
  
  public Long getIdTexto() {
    return idTexto;
  }
  
  public void setResultadoOperacion(String resultadoOperacion) {
    this.resultadoOperacion = resultadoOperacion;
  }
  
  public String getResultadoOperacion() {
    return resultadoOperacion;
  }
}